import axios from 'axios'
import { Notification, MessageBox, Message } from 'element-ui'

/**
 * get请求
 * @param {*} url 
 * @param {*} paramsObj 
 */
export function getJSON(url, paramsObj) {
    return new Promise((resolve, reject) => {
        axios.get(
            url,
            // headers: {
            //     'Content-Type': 'application/x-www-form-urlencoded',
            //     "Authorization":'bearer '+ token  //token换成从缓存获取
            // },
            {
            params: paramsObj
        }
        ).then((res) => {
            resolve(res)
        }).catch((e) => {
            Notification.error('没有成功！')
        })
    })
}
/**
 * post传输json对象
 * @param {*} url 
 * @param {*} paramsObj 
 */
export function postJSON(url, paramsObj) {
    console.log(paramsObj)
    return new Promise((resolve, reject) => {
        let that = this
        axios({
            method: 'post',
            url: url,
            // 参数解析
            params: paramsObj,
            // headers: {
            //     "Authorization":'bearer '+ token  //token换成从缓存获取
            // }
          }).then((res) => {
            resolve(res.data)
        }).catch((e) => {
            Notification.error('添加失败啦！')  
        })
    })
}

export function postUrl(url, paramsObj) {
    return new Promise((resolve, reject) => {
        axios({
            method: 'post',
            url: url,
            // 参数解析
            params: paramsObj,
            // headers: {
            //     "Authorization":'bearer '+ token  //token换成从缓存获取
            // }
          }).then((res) => {
            console.log(res)
            resolve(res.data)
        }).catch((e) => {
        Notification.error('找不到好朋友,失联啦失联啦...')
        })
    })
}
//请求token用到的
export function postUrlContentType(url, paramsObj) {
    let that = this
    console.log("发送post请求:"+paramsObj)
    return new Promise((resolve, reject) => {
        axios({
            method: 'post',
            url: url,
            data: paramsObj,
          }).then((res) => {
            resolve(res.data)
        }).catch((e) => {
            Notification.error('失败啦！...')
        })
    })
}

export function postFile(url, data, token) {
    return new Promise((resolve, reject) => {
        axios.post(url,data, {
            headers: {
                'Content-Type': 'multipart/form-data',
                "Authorization":'bearer '+ token  //token换成从缓存获取
            },
        }).then((res) => {
            resolve(res)
        }).catch((e) => {
            reject(e)
        })
    })
}

export function copy(obj) {
    let newobj = obj.constructor === Array ? [] : {};
    if(typeof obj !== 'object'){
        return;
    }
    for(let i in obj){
        newobj[i] = typeof obj[i] === 'object' ? copy(obj[i]) : obj[i];
    }
    return newobj
}

axios.interceptors.request.use(
  config => {
    if (localStorage.getItem('Authorization')) {
      config.headers.Authorization = localStorage.getItem('Authorization');
    }

    return config;
  },
  error => {
    return Promise.reject(error);
  });

// axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
// // 创建axios实例
// const service = axios.create({
//   // axios中请求配置有baseURL选项，表示请求URL公共部分
//   baseURL: process.env.VUE_APP_BASE_API,
//   // 超时
//   timeout: 10000
// })
// // request拦截器
// service.interceptors.request.use(config => {
//   // 是否需要设置 token
//   const isToken = (config.headers || {}).isToken === false
//   if (getToken() && !isToken) {
//     config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
//   }
//   // get请求映射params参数
//   if (config.method === 'get' && config.params) {
//     let url = config.url + '?';
//     for (const propName of Object.keys(config.params)) {
//       const value = config.params[propName];
//       var part = encodeURIComponent(propName) + "=";
//       if (value !== null && typeof(value) !== "undefined") {
//         if (typeof value === 'object') {
//           for (const key of Object.keys(value)) {
//             let params = propName + '[' + key + ']';
//             var subPart = encodeURIComponent(params) + "=";
//             url += subPart + encodeURIComponent(value[key]) + "&";
//           }
//         } else {
//           url += part + encodeURIComponent(value) + "&";
//         }
//       }
//     }
//     url = url.slice(0, -1);
//     config.params = {};
//     config.url = url;
//   }
//   return config
// }, error => {
//     console.log(error)
//     Promise.reject(error)
// })

// // 响应拦截器
// service.interceptors.response.use(res => {
//     // 未设置状态码则默认成功状态
//     const code = res.data.code || 200;
//     // 获取错误信息
//     const msg = errorCode[code] || res.data.msg || errorCode['default']
//     if (code === 401) {
//       MessageBox.confirm('登录状态已过期，您可以继续留在该页面，或者重新登录', '系统提示', {
//           confirmButtonText: '重新登录',
//           cancelButtonText: '取消',
//           type: 'warning'
//         }
//       ).then(() => {
//         store.dispatch('LogOut').then(() => {
//           location.href = '/index';
//         })
//       }).catch(() => {});
//       return Promise.reject('error')
//     } else if (code === 500) {
//       Message({
//         message: msg,
//         type: 'error'
//       })
//       return Promise.reject(new Error(msg))
//     } else if (code !== 200) {
//       Notification.error({
//         title: msg
//       })
//       return Promise.reject('error')
//     } else {
//       return res.data
//     }
//   },
//   error => {
//     console.log('err' + error)
//     let { message } = error;
//     if (message == "Network Error") {
//       message = "后端接口连接异常";
//     }
//     else if (message.includes("timeout")) {
//       message = "系统接口请求超时";
//     }
//     else if (message.includes("Request failed with status code")) {
//       message = "系统接口" + message.substr(message.length - 3) + "异常";
//     }
//     Message({
//       message: message,
//       type: 'error',
//       duration: 5 * 1000
//     })
//     return Promise.reject(error)
//   }
// )

// export default service

